# 模块概述
nodejs中,提供了url这个非常实用的模块,用来做URL的解析。在做node服务端的开发时会经常用到。使用很简单,总共只有3个方法。
# 模块方法概述
url模块三个方法分别是:
- .parse(urlString):将url字符串,解析成object,便于开发者进行操作。
- .format(urlObj):.parse() 方法的反向操作。
- .resove(from, to):以from作为起始地址,解析出完整的目标地址(还是看直接看例子好些)
# url解析:url.parse()
完整语法:url.parse(urlString[, parseQueryString[, slashesDenoteHost]])
使用比较简单,几个要点备忘如下。
- parseQueryString:(默认为false)如为false,则
urlObject.query为未解析的字符串,比如nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1,且对应的值不会decode;如果parseQueryString为true,则urlObject.query为object,比如{ nick: '程序员poetry' },且值会被decode; - slashesDenoteHos:(默认为false)如果为true,那么类似
//foo/bar里的foo就会被认为是hostname;如果为false,则foo被认为是pathname的一部分。 - 关于解析得到的 urlObject ,会在下一小节进行详细介绍。
# 例子1:参数值不进行解析
代码如下:
var url = require('url');
var str = 'http://Chyingp:HelloWorld@ke.qq.com:8080/index.html?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1#part=1';
var obj = url.parse(str);
console.log(obj);
@前端进阶之旅: 代码已经复制到剪贴板
输出如下:
Url {
protocol: 'http:',
slashes: true,
auth: 'Chyingp:HelloWorld',
host: 'ke.qq.com:8080',
port: '8080',
hostname: 'ke.qq.com',
hash: '#part=1',
search: '?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1',
query: 'nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1',
pathname: '/index.html',
path: '/index.html?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1',
href: 'http://Chyingp:HelloWorld@ke.qq.com:8080/index.html?nick=%E7%A8%8B%E5%BA%8F%E7%8C%BF%E5%B0%8F%E5%8D%A1#part=1' }
@前端进阶之旅: 代码已经复制到剪贴板
# 例子2:对参数值进行decode
代码如下:
var url = require('url');
